Flask学习与项目实战2:url与视图函数映射、视图转url | 您所在的位置:网站首页 › python is和is not › Flask学习与项目实战2:url与视图函数映射、视图转url |
url与视图的函数映射
访问book/list的url的时候发现是不可以访问的,因为我们返回额不是字典、元组等等,现在返回的是一个列表。 TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a list. 翻译:该视图没有返回一个可以响应的类型,如字符串、字典、wsgi可调用对象等。 ![]() 通过使用jsonify来进行返回这个json格式的东西。现在就可以将这个列表全部返回了。 ![]() ![]() 通过定义参数来进行参数。 ![]() ![]() 一个URL要与执行函数进行映射,使用的是@app.route装饰器。@app.route装饰器中,可以指定URL的规则来进行更加详细的映射。 其中,尖括号是固定写法,语法为,variable默认的数据类型是字符串。如果需要指定类型,则要写成converter:variable,其中converter就是类型名称,可以有以下几种: string: 默认的数据类型,接受没有任何斜杠/的字符串。int: 整形float: 浮点型。path: 和string类似,但是可以传递斜杠/。uuid: uuid类型的字符串。any:可以指定多种路径,通过下面一个例子来进行说明: @app.route('//') def item(url_path): return url_path例子中,item这个函数可以接受两个URL,一个是/article/,另一个是/blog/。并且,一定要传url_path参数,当然这个url_path的名称可以随便。 如果不想定制子路径来传递参数,也可以通过传统的?=的形式来传递参数,例如:/article?id=xxx,这种情况下,可以通过request.args.get(‘id’)来获取id的值。如果是post方法,则可以通过request.form.get(‘id’)来进行获取。 构造url一般通过一个URL就可以执行到某一个函数。如果反过来,我们知道一个函数,怎么去获得这个URL呢?url_for函数就可以帮我们实现这个功能。url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。 在公司的开发中,一般是会经常改变url的开发,但是函数名称可能不会改变。 所以需要构造url来进行开发。通过函数名称反转得到url地址。 通过构建URL的方式而选择直接在代码中拼URL的原因有两点:1、将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。2、url_for()函数会转义一些特殊字符和unicode字符串,这些事情url_for会自动的帮我们搞定。如中文、空格、特殊字符等等进行编码转换。 ![]() 也就是说当14行的url改变了,也不会影响我的url_for进行函数反转。仍然可以进行访问。 ; 指定url末尾的斜杠有些url的末尾是有斜杠的,但是有些没有,这实际上是两个不同的url。例如: @app.route('/article/') def articles(): return @app.route('/article') def articles(): return如果访问第一个,url时就算不带斜杠,也会被重定向到第一个去。但是访问第二个时,如果私自加上了斜杠,会返回一个404错误。 指定http方法在@app.route()中可以传入关键字methods,来限定访问的方式。 比如说有些定义的是post,但是你去get,会返回method not allowed。 ![]() 重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此应该给他重定向到登录页面。 ![]() Original: https://blog.csdn.net/weixin_51484460/article/details/122634154Author: 洲的学习笔记Title: Flask学习与项目实战2:url与视图函数映射、视图转url 相关阅读 Title: Django——admin站点 Django的后台管理站点Django为网站管理员设计了一个进行网站后台数据管理的站点,用于管理网站的用户、组、模型等各种数据。 Django是一个非常强大的Web框架,自带一个管理站点admin,一般用于管理者自己内部使用,由于页面并没有进行设计,一般不会将该站点提交给用户,只用于项目未上线之前的管理站点。 启用Admin站点Admin站点说到底也是一个网页,也是在django框架内的,所以该站点也是django的一个应用,需要连接数据库也需要进行URL路由配置,但是 django会自动执行创建应用、注册上下文处理器、注册中间件以及配置URL。 Admin站点的URL默认是 127.0.0.1:8000/admin; 初次访问admin站点时,需要 *执行数据库迁移并创建超级用户;如果没有进行 数据库迁移会出现下面这个页面 ![]() admin站点默认在数据库中就是存放以上画面中的东西,所以需要执行数据库迁移,创建相关的数据表用于存放登录信息 python manage.py makemigrations # admin应用是自动创建的,所以默认就是指admin python manage.py migrate # 数据更新到数据库中 创建超级用户创建超级用户是用于登录admin站点的,需要拥有访问权限;访问权限有两种: is_superuser=True和 is_staff=True。 方法一使用django指令来创建 python manage.py createsuperuser # 创建超级管理员![]() 使用默认的用户模型User创建 from django.contrib.auth.models import User user = User.objects.create(username='admin') # 创建一个叫admin的超级管理员 user.set_password('123456') user.is_superuser = True # 站点最高权限 # user.is_staff = True # 站点访问权限 user.save() 两种方法都是在交互环境下执行; 设置管理员密码是不会显示的,两次必须输入一致; django会将密码的哈希值保存在数据表中,不会直接保存明文; 修改密码时,需要调用 set.password()方法。 访问Admin站点 输入URL 127.0.0.1:8000/admin![]() ![]() 在这个页面下可以 管理用户、管理用户组以及管理模型(django默认不提供)。 ; 自定义admin站点django虽然自定义了管理站点,并且自动执行了一系列操作,但也允许根据用户的自我设计进行修改,以实现更多的自定义功能。 django的管理页面默认时英文的,如果使用中文,则需要修改本地中间件;在setting.py文件中的MIDDLEWARE参数中注册本地中间件 MIDDLEWARE = [ ... 'django.middleware.locale.LocaleMiddleware', # 中文中间件(本地化中间件) ]![]() admin也是一个应用,只需要在根urls.py文件中进行指定url就可以了 from django.contrib import admin from django.urls import path urlpatterns = [ path('root/', admin.site.urls), ]![]() Original: https://blog.csdn.net/weixin_49581968/article/details/123771769Author: A岛钙奶Title: Django——admin站点 原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/309232/ 转载文章受原作者版权保护。转载请注明原作者出处! |
CopyRight 2018-2019 实验室设备网 版权所有 |